/**
 *  Copyright [2022] [https://www.xiaonuo.vip]
 *	Snowy采用APACHE LICENSE 2.0开源协议，您在使用过程中，需要注意以下几点：
 *	1.请不要删除和修改根目录下的LICENSE文件。
 *	2.请不要删除和修改Snowy源码头部的版权声明。
 *	3.本项目代码可免费商业使用，商业使用请保留源码和相关描述文件的项目出处，作者声明等。
 *	4.分发源码时候，请注明软件出处 https://www.xiaonuo.vip
 *	5.不可二次分发开源参与同类竞品，如有想法可联系团队xiaonuobase@qq.com商议合作。
 *	6.若您的项目无法满足以上几点，需要更多功能代码，获取Snowy商业授权许可，请在官网购买授权，地址为 https://www.xiaonuo.vip
 */

// design 请使用 useDesign
// export const designStore = defineStore('design', () => {
// 	const selectedComponent = ref({}) // 画布选中组件
// 	const componentsConfigList = ref([]) // 所有组件的 config
// 	const componentsTypeList = ref([]) // 所有类别的type
//
// 	// 设置所有组件的 config
// 	const setComponentsConfigList = (key) => {
// 		componentsConfigList.value = key
// 	}
// 	// 设置所有类别的type
// 	const setComponentsTypeList = (key) => {
// 		componentsTypeList.value = key
// 		console.log(componentsTypeList.value, 999)
// 	}
// 	// 设置画布选中组件
// 	const setActiveComponent = (key) => {
// 		selectedComponent.value = key
// 	}
// 	return {
// 		selectedComponent,
// 		componentsConfigList,
// 		componentsTypeList,
// 		setActiveComponent,
// 		setComponentsConfigList,
// 		setComponentsTypeList
// 	}
// })
//
// export const useDesignStore = designStore
import { defineStore } from 'pinia'
import datasetApi from '@/views/plugin/dashboard/api/datasetApi'
import { message } from 'ant-design-vue'
import { dashboardListDelete, dashboardListPage } from '@/views/plugin/dashboard/api/dashboardApi'

export const designStore = defineStore('design', {
	state: () => ({
		mode: 'design',
		pagination: {
			current: 1,
			pageSize: 12,
			total: 0
		},
		canvasSourceData: [], // 画布数据
		dataSource: [], // 数据源
		drawerStatus: 0, // 0 画布 1样式  2数据
		selectedComponent: [],
		selectedComponentRef: null,
		activeDragAddItem: {},
		componentsConfigList: [],
		pesetsList: [],
		currentCategoryId: null, // 当前选中的分类ID
		dashboardList: [], // 当前分类下的仪表盘列表
		loading: false // 仪表盘列表加载状态
	}),
	actions: {
		// 设置当前选中的分类ID
		setCurrentCategoryId(id) {
			this.currentCategoryId = id
			this.pagination.current = 1
			this.fetchDashboardList()
		},
		// 设置当前分类下的仪表盘列表
		setDashboardList(list) {
			this.dashboardList = list
		},
		// 获取仪表盘列表数据
		async fetchDashboardList() {
			try {
				this.loading = true
				const params = {
					current: this.pagination.current,
					size: this.pagination.pageSize,
					categorizeId: this.currentCategoryId
				}
				const data = await dashboardListPage(params)
				if (data.records) {
					this.dashboardList = data.records
					this.pagination.total = data.total
				}
			} catch (error) {
				message.error('获取仪表盘列表失败')
				console.log(error)
			} finally {
				this.loading = false
			}
		},
		// 设置分页信息
		setPagination(pagination) {
			this.pagination = { ...this.pagination, ...pagination }
		},

		// 删除仪表盘
		async deleteDashboard(id) {
			try {
				await dashboardListDelete([{ id }])
			} catch (error) {
				console.log(error)
			}
		},
		// 获取数据源
		async getDataSource(obj = {}) {
			let dataSource = []
			await datasetApi.page(obj).then((res) => {
				this.dataSource = res?.records
				dataSource = res?.records
			})
			return dataSource
			// let dataSource = [
			// 	{
			// 		name: '测试数据源',
			// 		id: '1',
			// 		config: {
			// 			indicators: [
			// 				{
			// 					name: '444',
			// 					id: '1sfsdfeef',
			// 					age: '20',
			// 					list: [1, 2, 3]
			// 				},
			// 				{
			// 					name: '222',
			// 					id: '1sdfeeseef',
			// 					del: false,
			// 					source: [1, 2, 3]
			// 				}
			// 			]
			// 		}
			// 	},
			// 	{
			// 		name: '商城数据源',
			// 		id: '2',
			// 		config: {
			// 			indicators: [
			// 				{
			// 					name: '商城444',
			// 					id: '2sfsdfeef',
			// 					age: '20',
			// 					list: [1, 2, 3]
			// 				},
			// 				{
			// 					name: '商城222',
			// 					id: '2sdfeeseef',
			// 					del: false,
			// 					source: [1, 2, 3]
			// 				}
			// 			]
			// 		}
			// 	}
			// ]
			// this.dataSource = dataSource
			// return dataSource
		}
	},
	persist: {
		storage: sessionStorage
	}
})
